package ar.com.ctrln.persistence.model.liquidacion;

import java.util.Date;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.apache.commons.lang.builder.HashCodeBuilder;

import ar.com.ctrln.persistence.model.cliente.Cliente;

@Entity
@Table(name = "DETALLE_LIQUIDACION")
public class DetalleLiquidacion {

	@Id
	@GeneratedValue
	@Column(name = "id_detalle")
	private long id;

	@Column
	private Date fechaDesde;

	@Column
	private Date fechaHasta;

	@Column
	private int mes;

	@Column
	private int anio;

	@OneToOne
	private Cliente cliente;

	@Column
	private double totalIngreso;

	@Column
	private double totalEgreso;

	@Column
	private double total;

	@OneToMany(mappedBy = "detalle", fetch = FetchType.EAGER)
	private Set<Componente> componentes;

	@ManyToOne
	@JoinColumn(name = "id_liquidacion")
	private Liquidacion liquidacion;

	public Date getFechaDesde() {
		return fechaDesde;
	}

	public void setFechaDesde(Date fechaDesde) {
		this.fechaDesde = fechaDesde;
	}

	public Date getFechaHasta() {
		return fechaHasta;
	}

	public void setFechaHasta(Date fechaHasta) {
		this.fechaHasta = fechaHasta;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public double getTotal() {
		return total;
	}

	public void setTotal(double total) {
		this.total = total;
	}

	public Set<Componente> getComponentes() {
		return componentes;
	}

	public void setComponentes(Set<Componente> componentes) {
		this.componentes = componentes;
	}

	public void setLiquidacion(Liquidacion liquidacion) {
		this.liquidacion = liquidacion;
	}

	public Liquidacion getLiquidacion() {
		return liquidacion;
	}

	public void setMes(int mes) {
		this.mes = mes;
	}

	public void setAnio(int anio) {
		this.anio = anio;
	}

	public int getMes() {
		return mes;
	}

	public int getAnio() {
		return anio;
	}

	public double getTotalIngreso() {
		return totalIngreso;
	}

	public void setTotalIngreso(double totalIngreso) {
		this.totalIngreso = totalIngreso;
	}

	public double getTotalEgreso() {
		return totalEgreso;
	}

	public void setTotalEgreso(double totalEgreso) {
		this.totalEgreso = totalEgreso;
	}
	
	

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	@Override
	public boolean equals(Object obj) {

		return (obj instanceof DetalleLiquidacion && getId() == ((DetalleLiquidacion) obj)
				.getId());
	}

	@Override
	public int hashCode() {
		return new HashCodeBuilder(17, 37).append(getFechaHasta())
				.append(getFechaDesde()).toHashCode();
	}
}
